#include "ahxgwnet.h"

namespace ahxgwnet {

/**
 * 重写signal函数
 *
 * @param signo 信号值
 * @param *func 信号处理函数指针
 * @return 信号处理函数指针
 */
sigFunc * Util::signal(int signo, sigFunc *func)
{
    struct sigaction act, oact;
    
    act.sa_handler = func;
    sigemptyset (&act.sa_mask);
    act.sa_flags = 0;
    if (signo == SIGALRM)
    {
#ifdef  SA_INTERRUPT
        act.sa_flags |= SA_INTERRUPT;     /* SunOS 4.x */
#endif
    }
    else
    {
#ifdef  SA_RESTART
        act.sa_flags |= SA_RESTART; /* SVR4, 4.4BSD */
#endif
    }
    if (sigaction (signo, &act, &oact) < 0)
        return (SIG_ERR);
    return (oact.sa_handler);
}

}
